package com.dc.commons.persistence.embeddable;

import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.Transient;

import com.dc.commons.dict.Dictionary;

/*******************************************************************************<P>
 * 文件名: Dict.java <br>
 * 版本: 1.0<br>
 * 描述: 字典<br>
 * 版权所有: <br>
 * <P>
 * 创建者: 王建栋 <br>
 * 创建日期: 2015年12月14日 下午9:17:19<br>
 * 修改者: <br>
 * 修改日期: <br>
 * 修改说明: <br>
 ******************************************************************************/
@Embeddable
public class Dict implements Dictionary{
	
	public static final String CODE="code";
	
	/**
	 * 字典类型
	 */
	private String type;
	/**
	 * 字典 代码
	 */
	private String code;
	/**
	 *  字典 内容
	 */
	private String name;
	private String value;
	
	public static Dict valueOf(String value){
		return new Dict(value);
	}
	
	
	public Dict(){
		
	}
	
	/**
	 * value 规则 dictType|dictCode
	 * @param value
	 */
	public Dict(String value){
		String[] splits=value.split("\\|",2);
		this.code=value;
		if(splits.length==2){
			this.type=splits[0];
			this.value=splits[1];
		}
	}
	
	
	/* (non-Javadoc)
	 * @see com.dc.commons.dict.Dictionary#getCode()
	 */
	@Override
	@Column(name="CODE",length=50)
	public String getCode() {
		return this.code;
	}

	/* (non-Javadoc)
	 * @see com.dc.commons.dict.Dictionary#getName()
	 */
	@Override
	@Transient
	public String getName() {
		return this.name;
	}

	/**
	 * 返回字典的值
	 * @return value
	 */
	@Transient
	public String getValue() {
		return value;
	}


	/**
	 * 获得 字典类型 
	 * @return type
	 */
	@Transient
	public String getType() {
		return type;
	}

	/**
	 * 设置 字典内容
	 * @param name
	 */
	public void setName(String name) {
		this.name = name;
	}

	public void setType(String type) {
		this.type = type;
	}

	public void setCode(String code) {
		String[] splits=code.split("\\|",2);
		this.type=splits[0];
		this.code = code;
		//FIXME 在这里 调用缓存查询字典信息
	}
	

}
